package com.ruoyi.system.service.impl;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.ruoyi.common.utils.uuid.UUID;
import com.ruoyi.system.domain.Dept;
import com.ruoyi.system.domain.JingfeiJingfeipici;
import com.ruoyi.system.service.IDeptService;
import com.ruoyi.system.service.IJingfeiJingfeipiciService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.JingfeiDanweiquerenMapper;
import com.ruoyi.system.domain.JingfeiDanweiqueren;
import com.ruoyi.system.service.IJingfeiDanweiquerenService;
import com.ruoyi.common.core.text.Convert;
import org.springframework.transaction.annotation.Transactional;

/**
 * danweiquerenService业务层处理
 * 
 * @author ruoyi
 * @date 2024-07-11
 */
@Service
public class JingfeiDanweiquerenServiceImpl implements IJingfeiDanweiquerenService 
{
    @Autowired
    private JingfeiDanweiquerenMapper jingfeiDanweiquerenMapper;

    @Autowired
    private IDeptService deptService;

    @Autowired
    private IJingfeiJingfeipiciService jingfeiJingfeipiciService;

    /**
     * 查询danweiqueren
     * 
     * @param querenid danweiqueren主键
     * @return danweiqueren
     */
    @Override
    public JingfeiDanweiqueren selectJingfeiDanweiquerenByQuerenid(String querenid)
    {
        return jingfeiDanweiquerenMapper.selectJingfeiDanweiquerenByQuerenid(querenid);
    }

    /**
     * 查询danweiqueren列表
     * 
     * @param jingfeiDanweiqueren danweiqueren
     * @return danweiqueren
     */
    @Override
    public List<JingfeiDanweiqueren> selectJingfeiDanweiquerenList(JingfeiDanweiqueren jingfeiDanweiqueren)
    {
        return jingfeiDanweiquerenMapper.selectJingfeiDanweiquerenList(jingfeiDanweiqueren);
    }

    /**
     * 新增danweiqueren
     * 
     * @param jingfeiDanweiqueren danweiqueren
     * @return 结果
     */
    @Override
    public int insertJingfeiDanweiqueren(JingfeiDanweiqueren jingfeiDanweiqueren)
    {
        return jingfeiDanweiquerenMapper.insertJingfeiDanweiqueren(jingfeiDanweiqueren);
    }

    /**
     * 修改danweiqueren
     * 
     * @param jingfeiDanweiqueren danweiqueren
     * @return 结果
     */
    @Override
    public int updateJingfeiDanweiqueren(JingfeiDanweiqueren jingfeiDanweiqueren)
    {
        return jingfeiDanweiquerenMapper.updateJingfeiDanweiqueren(jingfeiDanweiqueren);
    }

    /**
     * 批量删除danweiqueren
     * 
     * @param querenids 需要删除的danweiqueren主键
     * @return 结果
     */
    @Override
    public int deleteJingfeiDanweiquerenByQuerenids(String querenids)
    {
        return jingfeiDanweiquerenMapper.deleteJingfeiDanweiquerenByQuerenids(Convert.toStrArray(querenids));
    }

    /**
     * 删除danweiqueren信息
     * 
     * @param querenid danweiqueren主键
     * @return 结果
     */
    @Override
    public int deleteJingfeiDanweiquerenByQuerenid(String querenid)
    {
        return jingfeiDanweiquerenMapper.deleteJingfeiDanweiquerenByQuerenid(querenid);
    }

    //查询下级单位确认情况
    @Override
    public List<Map<String,Object>>findQuerenByParentid(String ppDeptId, String ppJingfeipiciId, String ppDeptName, String ppShifouqueren){

        ppDeptName = "%"+ppDeptName+"%";

        return jingfeiDanweiquerenMapper.findQuerenByParentid(ppDeptId,ppJingfeipiciId,ppDeptName,ppShifouqueren);
    }

    @Override
    @Transactional
    public boolean queren(JingfeiDanweiqueren ppJingfeiDanweiqueren){
        boolean ok = true;

        Dept mmDept = deptService.selectDeptByDeptid(ppJingfeiDanweiqueren.getDeptid());
        String parentid = mmDept.getParentid();

        JingfeiJingfeipici mmJingfeipici = new JingfeiJingfeipici();
        mmJingfeipici.setIsfafang(0l);
        mmJingfeipici.setDeptid(parentid);
        List<JingfeiJingfeipici> mmJingfeiList = jingfeiJingfeipiciService.selectJingfeiJingfeipiciList(mmJingfeipici);
        System.out.println("mmJingfeiList:"+mmJingfeiList);
        for (int i=0;i<mmJingfeiList.size();i++){
            String mmPiciId = mmJingfeiList.get(i).getJingfeipiciid();
            ppJingfeiDanweiqueren.setQuerenid(UUID.randomUUID().toString());
            ppJingfeiDanweiqueren.setJingfeipiciid(mmPiciId);

            JingfeiDanweiqueren tempJingfeiDanweiqueren = new JingfeiDanweiqueren();
            tempJingfeiDanweiqueren.setJingfeipiciid(mmPiciId);
            tempJingfeiDanweiqueren.setDeptid(ppJingfeiDanweiqueren.getDeptid());
            List<JingfeiDanweiqueren> mmTempList = this.selectJingfeiDanweiquerenList(tempJingfeiDanweiqueren);
            if (mmTempList.size()==1){
                JingfeiDanweiqueren one = mmTempList.get(0);
                one.setQuerenshijian(new Date());
                int modifyOne = this.updateJingfeiDanweiqueren(one);
                if (modifyOne!=1){
                    ok = false;
                    throw new RuntimeException("变动确认修改失败");
                }
            } else if (mmTempList.size()>1) {
                ok = false;
                throw new RuntimeException("变动确认查询失败");
            } else{
                System.out.println(ppJingfeiDanweiqueren);
                int addQueren = this.insertJingfeiDanweiqueren(ppJingfeiDanweiqueren);
                if (addQueren!=1){
                    ok = false;
                    throw new RuntimeException("变动确认添加失败");
                }
            }

        }

        return ok;
    }
}
